home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Sapphire Collection / Software Vault (Sapphire Collection) (Digital Impact).ISO / cdr47 / pgloader.zip / LENS.ASM < prev    next >
Assembly Source File  |  1994-03-05  |  3KB  |  55 lines

  1. ;============================================================================;
  2. ; Lens effects are neat because they require almost no processor time. They  ;
  3. ; do, however, require some forethought... designing the lens lookup to look ;
  4. ; good and be fairly quick. There are many ways to do this, but I think this ;
  5. ; is the fastest Mode 13h implementation possible. Who knows.                ;
  6. ;============================================================================;
  7.         ;-------------------------------;
  8. dl_si   dw      0                       ;
  9. dl_offs dw      0                       ;
  10.         ;-------------------------------;
  11.         ; Do the lens. Watch close.     ;
  12.         ; BX = Y, CX = X.               ;
  13.         ; Be careful ripping this.      ;
  14.         ; Assumes a screen copy at      ;
  15.         ; DATA:0000 and all vars are    ;
  16.         ; codeseg.                      ;
  17. do_lens proc                            ;
  18.         push es                         ;
  19.         push ds                         ;
  20.         push bp                         ;
  21.         xor si,si                       ;
  22.         mov ax,[datseg]                 ;
  23.         mov ds,ax                       ;
  24.         mov ax,0a000h                   ;
  25.         mov es,ax                       ;
  26.         mov ax,cx                       ;
  27.         sal cx,8                        ;
  28.         sal ax,6                        ;
  29.         add ax,cx                       ;
  30.         add ax,bx                       ;
  31.         mov cs:[dl_offs],ax             ;
  32.         mov bx,offset lens              ;
  33.         mov dx,cs:[dl_offs]             ;
  34.         mov cs:[dl_si],si               ;
  35.         mov bp,51                       ;
  36. dl_01:  mov cx,50                       ;
  37.         mov di,cs:[dl_si]               ;
  38.         add di,dx                       ;
  39. dl_02:  mov si,word ptr cs:[bx]         ;
  40.         add si,di                       ;
  41. dl_02a: mov al,byte ptr ds:[si]         ;
  42.         mov byte ptr es:[di],al         ;
  43. dl_02b: add bx,2                        ;
  44.         inc di                          ;
  45.         dec cx                          ;
  46.         jnz dl_02                       ;
  47.         add dx,320                      ;
  48.         dec bp                          ;
  49.         jnz dl_01                       ;
  50.         pop bp                          ;
  51.         pop ds                          ;
  52.         pop es                          ;
  53.         ret                             ;
  54. do_lens endp                            ;
  55.